from functools import reduce #test:函数式编程

def square(i):
    return i*i

def Str(i):
    i=str(i)
    return i

def add(x,y):
    return x+y

def critical(k):
    return k // 3 == 2

#注意！！！  以下函数的使用,是对list的元素进行操作,若最后的结果是得到一个列表,则print时要将结果转化为lsit形式,直接打印是返回计算结果的迭代器对象
#标准形式：functool（func,[list_1],[list_2],[list_n]）

Add=reduce(add,[i for i in range(100)]) #reduce的使用,利用reduce实现1到99的和
print(Add)


r=map(square,[i for i in range(10)]) #map的使用,实现将1到9的平方存入列表,并将元素由int转化为str
r2=map(Str,list(r))
print(list(r2))


f=filter(critical,[1,2,3,4,5,6,7,8,9]) #filter除杂函数的使用
print(list(f))

Add_2=reduce(lambda m,n:m+n,[i for i in range(100)])  #lambda匿名函数的使用,可用于省去def函数这一过程,简化代码。此处就是用lambda来省去def add函数这一过程
print(Add_2)